'use strict';

import { Application } from 'egg'

const apiHeader = '/api/data'
const apiAuthHeader = '/auth/data'
const apiSuperAuthHeader = '/super-auth/data'

const getApi = (path: string) => {
  return `${apiHeader}/${path}`
}

const getAuthApi = (path: string) => {
  return `${apiAuthHeader}/${path}`
}

const getSuperAuthHeader = (path: string) => {
  return `${apiSuperAuthHeader}/${path}`
}


export default (app: Application) => {
  const { router, controller } = app;
  // 更新单条数据
  router.post(getAuthApi('update-one/:id'), controller.data.updateOne);
  // 获取单条数据
  router.get(getAuthApi('one/:id'), controller.data.getOne);
  // 获取单条数据的历史记录
  router.get(getAuthApi('record/:id'), controller.data.record);
  // 删除单条记录
  router.delete(getSuperAuthHeader('record/:id'), controller.data.recordRemove);
  // 恢复单条数据 
  router.get(getAuthApi('one/restore/:id'), controller.data.restoreOne);
  // 通过UUID获取单条数据(纯数据)
  router.get(getApi('one/:uuid'), controller.data.getOneData);
  // 通过UUID获取单条数据(纯数据)
  router.get(getApi('ones'), controller.data.getOneDatas);

  // 数组添加单条数据
  router.post(getAuthApi('array/:id'), controller.data.arrayPush);
  // 获取数组数据（回收站或者正常数据）
  router.get(getAuthApi('array/:id'), controller.data.arrayList);
  // 修改数组中的数据
  router.post(getAuthApi('array/update/:id'), controller.data.arrayListUpdate);
  // 删除数组数据（只是放入回收站，没有真正删除）
  router.delete(getAuthApi('array/recycle-push/:id'), controller.data.arrayListRecyclePush);
  // 回收站撤销数据
  router.get(getAuthApi('array/recycle-pop/:id'), controller.data.arrayListRecyclePop);
  // 删除列表数据（不可恢复）
  router.delete(getSuperAuthHeader(':id'), controller.data.remove);
  // 通过UUID获取列表数据(纯数据)
  router.get(getApi('array/:uuid'), controller.data.getArrayData);
};
